#ifndef AVL_TREE_H
#define AVL_TREE_H

typedef struct tree_node{
    struct tree_node *left;
    struct tree_node *right;
    int height;
    int data;
}tree_node_t;
extern tree_node_t *new_avl_tree_node(int data);
extern void free_avl_tree_node(tree_node_t *node);
extern void avl_tree_height_update(tree_node_t *root);
extern void avl_tree_insert_node(tree_node_t **root, int data);
extern void avl_tree_delete_node(tree_node_t **root, int data);
extern void avl_tree_print(tree_node_t *root);

#endif // AVL_TREE_H
